import java.util.ArrayList;
import java.util.List;

public class MUR extends Strategy {

	List<Request> requests;
	List<Integer> memoria = new ArrayList<Integer>();

	public MUR(int numFrames, List<Request> requests) {
		super(numFrames, requests);
		this.requests = requests;
	}

	public void run() {
		for (Request request : requests) {
			Integer pagina = request.value;
			int posicao = getPosicaoPagina(request.value);
			if (posicao < 0) {
				if (memoria.size() < this.frameSize) {
					memoria.add(pagina);
				} else {
					memoria.remove(0);
					memoria.add(pagina);
				}
			} else {
				memoria.remove(posicao);
				memoria.add(pagina);
				hit++;
			}
		}
	}

	static String getName() {
		return "MUR";
	}

	public void reset() {
		memoria = new ArrayList<Integer>();
		hit = 0;
	}

	private int getPosicaoPagina(int pagina) {
		for (int i = 0; i < memoria.size(); i++) {
			if (memoria.get(i) == pagina) {
				return i;
			}
		}
		return -1;
	}

}
